x86: Fix PV guest xsave support.
authorKeir Fraser <keir@xen.org>
Mon, 8 Nov 2010 15:41:01 +0000 (15:41 +0000)
committerKeir Fraser <keir@xen.org>
Mon, 8 Nov 2010 15:41:01 +0000 (15:41 +0000)
Signed-off-by: Shan Haitao <haitao.shan@intel.com>
xen/arch/x86/domain.c
xen/arch/x86/i387.c

index 7356efff3f90461ef89857f2aa8b224a74e643a9..d50cbac751106892f94ad248e4cfce581ead1b8a 100644 (file)
@@ -395,7 +395,7 @@ int vcpu_initialise(struct vcpu *v)
     rc = 0;
     if ( is_pv_32on64_vcpu(v) )
         rc = setup_compat_l4(v);
-    if ( !rc )
+    if ( rc )
         xfree(v->arch.xsave_area);
 
     return rc;
index 27b49234ede8abdd4b02f9197e4bb9f21752e655..1398b8fa5bf7e1343d2e60b7205eb69f0a65b054 100644 (file)
@@ -209,6 +209,7 @@ void xsave_init_save_area(void *save_area)
     memset(save_area, 0, xsave_cntxt_size);
 
     ((u32 *)save_area)[6] = 0x1f80;  /* MXCSR */
+    *(uint64_t *)(save_area + 512) = XSTATE_FP_SSE;  /* XSETBV */
 }
 
 /*